open comment asterisk css underscore descramble dot c 
 
 asterisk 
 
 asterisk Released under the version 2 of the GPL dot 
 
 asterisk 
 
 asterisk Copyright 1999 Derek Fawcus 
 
 asterisk 
 
 asterisk This file contains functions to descramble CSS encrypted DVD content 
 
 asterisk 
 
 close comment 
 
 open comment asterisk Still in progress : Remove the use of the bit underscore reverse open a square bracket close a square bracket table by recoding 
 
 asterisk the generation of LFSR1 dot Finish combining this with 
 
 asterisk the css authentication code dot 
 
 asterisk 
 
 close comment 
 
 number sign include is lesser than stdio dot h is greater than 
 
 number sign include is lesser than string dot h is greater than 
 
 number sign include " css dash descramble dot h " 
 
 
 
 typedef unsigned char byte dot comma 
 
 
 
 open comment asterisk 
 
 asterisk some tables used for descrambling sectors and slash or decrypting title keys 
 
 asterisk 
 
 close comment 
 
 static byte csstab1 open a square bracket 256 close a square bracket is assigned 
 
 open a bracket 
 
 0x33 comma 0x73 comma 0x3b comma 0x26 comma 0x63 comma 0x23 comma 0x6b comma 0x76 comma 0x3e comma 0x7e comma 0x36 comma 0x2b comma 0x6e comma 0x2e comma 0x66 comma 0x7b comma 
 
 0xd3 comma 0x93 comma 0xdb comma 0x06 comma 0x43 comma 0x03 comma 0x4b comma 0x96 comma 0xde comma 0x9e comma 0xd6 comma 0x0b comma 0x4e comma 0x0e comma 0x46 comma 0x9b comma 
 
 0x57 comma 0x17 comma 0x5f comma 0x82 comma 0xc7 comma 0x87 comma 0xcf comma 0x12 comma 0x5a comma 0x1a comma 0x52 comma 0x8f comma 0xca comma 0x8a comma 0xc2 comma 0x1f comma 
 
 0xd9 comma 0x99 comma 0xd1 comma 0x00 comma 0x49 comma 0x09 comma 0x41 comma 0x90 comma 0xd8 comma 0x98 comma 0xd0 comma 0x01 comma 0x48 comma 0x08 comma 0x40 comma 0x91 comma 
 
 0x3d comma 0x7d comma 0x35 comma 0x24 comma 0x6d comma 0x2d comma 0x65 comma 0x74 comma 0x3c comma 0x7c comma 0x34 comma 0x25 comma 0x6c comma 0x2c comma 0x64 comma 0x75 comma 
 
 0xdd comma 0x9d comma 0xd5 comma 0x04 comma 0x4d comma 0x0d comma 0x45 comma 0x94 comma 0xdc comma 0x9c comma 0xd4 comma 0x05 comma 0x4c comma 0x0c comma 0x44 comma 0x95 comma 
 
 0x59 comma 0x19 comma 0x51 comma 0x80 comma 0xc9 comma 0x89 comma 0xc1 comma 0x10 comma 0x58 comma 0x18 comma 0x50 comma 0x81 comma 0xc8 comma 0x88 comma 0xc0 comma 0x11 comma 
 
 0xd7 comma 0x97 comma 0xdf comma 0x02 comma 0x47 comma 0x07 comma 0x4f comma 0x92 comma 0xda comma 0x9a comma 0xd2 comma 0x0f comma 0x4a comma 0x0a comma 0x42 comma 0x9f comma 
 
 0x53 comma 0x13 comma 0x5b comma 0x86 comma 0xc3 comma 0x83 comma 0xcb comma 0x16 comma 0x5e comma 0x1e comma 0x56 comma 0x8b comma 0xce comma 0x8e comma 0xc6 comma 0x1b comma 
 
 0xb3 comma 0xf3 comma 0xbb comma 0xa6 comma 0xe3 comma 0xa3 comma 0xeb comma 0xf6 comma 0xbe comma 0xfe comma 0xb6 comma 0xab comma 0xee comma 0xae comma 0xe6 comma 0xfb comma 
 
 0x37 comma 0x77 comma 0x3f comma 0x22 comma 0x67 comma 0x27 comma 0x6f comma 0x72 comma 0x3a comma 0x7a comma 0x32 comma 0x2f comma 0x6a comma 0x2a comma 0x62 comma 0x7f comma 
 
 0xb9 comma 0xf9 comma 0xb1 comma 0xa0 comma 0xe9 comma 0xa9 comma 0xe1 comma 0xf0 comma 0xb8 comma 0xf8 comma 0xb0 comma 0xa1 comma 0xe8 comma 0xa8 comma 0xe0 comma 0xf1 comma 
 
 0x5d comma 0x1d comma 0x55 comma 0x84 comma 0xcd comma 0x8d comma 0xc5 comma 0x14 comma 0x5c comma 0x1c comma 0x54 comma 0x85 comma 0xcc comma 0x8c comma 0xc4 comma 0x15 comma 
 
 0xbd comma 0xfd comma 0xb5 comma 0xa4 comma 0xed comma 0xad comma 0xe5 comma 0xf4 comma 0xbc comma 0xfc comma 0xb4 comma 0xa5 comma 0xec comma 0xac comma 0xe4 comma 0xf5 comma 
 
 0x39 comma 0x79 comma 0x31 comma 0x20 comma 0x69 comma 0x29 comma 0x61 comma 0x70 comma 0x38 comma 0x78 comma 0x30 comma 0x21 comma 0x68 comma 0x28 comma 0x60 comma 0x71 comma 
 
 0xb7 comma 0xf7 comma 0xbf comma 0xa2 comma 0xe7 comma 0xa7 comma 0xef comma 0xf2 comma 0xba comma 0xfa comma 0xb2 comma 0xaf comma 0xea comma 0xaa comma 0xe2 comma 0xff 
 
 close a bracket dot comma 
 
 
 
 static byte lfsr1 underscore bits0 open a square bracket 256 close a square bracket is assigned 
 
 open a bracket 
 
 0x00 comma 0x01 comma 0x02 comma 0x03 comma 0x04 comma 0x05 comma 0x06 comma 0x07 comma 0x09 comma 0x08 comma 0x0b comma 0x0a comma 0x0d comma 0x0c comma 0x0f comma 0x0e comma 
 
 0x12 comma 0x13 comma 0x10 comma 0x11 comma 0x16 comma 0x17 comma 0x14 comma 0x15 comma 0x1b comma 0x1a comma 0x19 comma 0x18 comma 0x1f comma 0x1e comma 0x1d comma 0x1c comma 
 
 0x24 comma 0x25 comma 0x26 comma 0x27 comma 0x20 comma 0x21 comma 0x22 comma 0x23 comma 0x2d comma 0x2c comma 0x2f comma 0x2e comma 0x29 comma 0x28 comma 0x2b comma 0x2a comma 
 
 0x36 comma 0x37 comma 0x34 comma 0x35 comma 0x32 comma 0x33 comma 0x30 comma 0x31 comma 0x3f comma 0x3e comma 0x3d comma 0x3c comma 0x3b comma 0x3a comma 0x39 comma 0x38 comma 
 
 0x49 comma 0x48 comma 0x4b comma 0x4a comma 0x4d comma 0x4c comma 0x4f comma 0x4e comma 0x40 comma 0x41 comma 0x42 comma 0x43 comma 0x44 comma 0x45 comma 0x46 comma 0x47 comma 
 
 0x5b comma 0x5a comma 0x59 comma 0x58 comma 0x5f comma 0x5e comma 0x5d comma 0x5c comma 0x52 comma 0x53 comma 0x50 comma 0x51 comma 0x56 comma 0x57 comma 0x54 comma 0x55 comma 
 
 0x6d comma 0x6c comma 0x6f comma 0x6e comma 0x69 comma 0x68 comma 0x6b comma 0x6a comma 0x64 comma 0x65 comma 0x66 comma 0x67 comma 0x60 comma 0x61 comma 0x62 comma 0x63 comma 
 
 0x7f comma 0x7e comma 0x7d comma 0x7c comma 0x7b comma 0x7a comma 0x79 comma 0x78 comma 0x76 comma 0x77 comma 0x74 comma 0x75 comma 0x72 comma 0x73 comma 0x70 comma 0x71 comma 
 
 0x92 comma 0x93 comma 0x90 comma 0x91 comma 0x96 comma 0x97 comma 0x94 comma 0x95 comma 0x9b comma 0x9a comma 0x99 comma 0x98 comma 0x9f comma 0x9e comma 0x9d comma 0x9c comma 
 
 0x80 comma 0x81 comma 0x82 comma 0x83 comma 0x84 comma 0x85 comma 0x86 comma 0x87 comma 0x89 comma 0x88 comma 0x8b comma 0x8a comma 0x8d comma 0x8c comma 0x8f comma 0x8e comma 
 
 0xb6 comma 0xb7 comma 0xb4 comma 0xb5 comma 0xb2 comma 0xb3 comma 0xb0 comma 0xb1 comma 0xbf comma 0xbe comma 0xbd comma 0xbc comma 0xbb comma 0xba comma 0xb9 comma 0xb8 comma 
 
 0xa4 comma 0xa5 comma 0xa6 comma 0xa7 comma 0xa0 comma 0xa1 comma 0xa2 comma 0xa3 comma 0xad comma 0xac comma 0xaf comma 0xae comma 0xa9 comma 0xa8 comma 0xab comma 0xaa comma 
 
 0xdb comma 0xda comma 0xd9 comma 0xd8 comma 0xdf comma 0xde comma 0xdd comma 0xdc comma 0xd2 comma 0xd3 comma 0xd0 comma 0xd1 comma 0xd6 comma 0xd7 comma 0xd4 comma 0xd5 comma 
 
 0xc9 comma 0xc8 comma 0xcb comma 0xca comma 0xcd comma 0xcc comma 0xcf comma 0xce comma 0xc0 comma 0xc1 comma 0xc2 comma 0xc3 comma 0xc4 comma 0xc5 comma 0xc6 comma 0xc7 comma 
 
 0xff comma 0xfe comma 0xfd comma 0xfc comma 0xfb comma 0xfa comma 0xf9 comma 0xf8 comma 0xf6 comma 0xf7 comma 0xf4 comma 0xf5 comma 0xf2 comma 0xf3 comma 0xf0 comma 0xf1 comma 
 
 0xed comma 0xec comma 0xef comma 0xee comma 0xe9 comma 0xe8 comma 0xeb comma 0xea comma 0xe4 comma 0xe5 comma 0xe6 comma 0xe7 comma 0xe0 comma 0xe1 comma 0xe2 comma 0xe3 
 
 close a bracket dot comma 
 
 
 
 static byte lfsr1 underscore bits1 open a square bracket 512 close a square bracket is assigned 
 
 open a bracket 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 
 
 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff comma 0x00 comma 0x24 comma 0x49 comma 0x6d comma 0x92 comma 0xb6 comma 0xdb comma 0xff 
 
 close a bracket dot comma 
 
 
 
 open comment */v 
 static byte bit underscore reverse open a square bracket 256 close a square bracket is assigned 
 
 open a bracket 
 
 0x00 comma 0x80 comma 0x40 comma 0xc0 comma 0x20 comma 0xa0 comma 0x60 comma 0xe0 comma 0x10 comma 0x90 comma 0x50 comma 0xd0 comma 0x30 comma 0xb0 comma 0x70 comma 0xf0 comma 
 
 0x08 comma 0x88 comma 0x48 comma 0xc8 comma 0x28 comma 0xa8 comma 0x68 comma 0xe8 comma 0x18 comma 0x98 comma 0x58 comma 0xd8 comma 0x38 comma 0xb8 comma 0x78 comma 0xf8 comma 
 
 0x04 comma 0x84 comma 0x44 comma 0xc4 comma 0x24 comma 0xa4 comma 0x64 comma 0xe4 comma 0x14 comma 0x94 comma 0x54 comma 0xd4 comma 0x34 comma 0xb4 comma 0x74 comma 0xf4 comma 
 
 0x0c comma 0x8c comma 0x4c comma 0xcc comma 0x2c comma 0xac comma 0x6c comma 0xec comma 0x1c comma 0x9c comma 0x5c comma 0xdc comma 0x3c comma 0xbc comma 0x7c comma 0xfc comma 
 
 0x02 comma 0x82 comma 0x42 comma 0xc2 comma 0x22 comma 0xa2 comma 0x62 comma 0xe2 comma 0x12 comma 0x92 comma 0x52 comma 0xd2 comma 0x32 comma 0xb2 comma 0x72 comma 0xf2 comma 
 
 0x0a comma 0x8a comma 0x4a comma 0xca comma 0x2a comma 0xaa comma 0x6a comma 0xea comma 0x1a comma 0x9a comma 0x5a comma 0xda comma 0x3a comma 0xba comma 0x7a comma 0xfa comma 
 
 0x06 comma 0x86 comma 0x46 comma 0xc6 comma 0x26 comma 0xa6 comma 0x66 comma 0xe6 comma 0x16 comma 0x96 comma 0x56 comma 0xd6 comma 0x36 comma 0xb6 comma 0x76 comma 0xf6 comma 
 
 0x0e comma 0x8e comma 0x4e comma 0xce comma 0x2e comma 0xae comma 0x6e comma 0xee comma 0x1e comma 0x9e comma 0x5e comma 0xde comma 0x3e comma 0xbe comma 0x7e comma 0xfe comma 
 
 0x01 comma 0x81 comma 0x41 comma 0xc1 comma 0x21 comma 0xa1 comma 0x61 comma 0xe1 comma 0x11 comma 0x91 comma 0x51 comma 0xd1 comma 0x31 comma 0xb1 comma 0x71 comma 0xf1 comma 
 
 0x09 comma 0x89 comma 0x49 comma 0xc9 comma 0x29 comma 0xa9 comma 0x69 comma 0xe9 comma 0x19 comma 0x99 comma 0x59 comma 0xd9 comma 0x39 comma 0xb9 comma 0x79 comma 0xf9 comma 
 
 0x05 comma 0x85 comma 0x45 comma 0xc5 comma 0x25 comma 0xa5 comma 0x65 comma 0xe5 comma 0x15 comma 0x95 comma 0x55 comma 0xd5 comma 0x35 comma 0xb5 comma 0x75 comma 0xf5 comma 
 
 0x0d comma 0x8d comma 0x4d comma 0xcd comma 0x2d comma 0xad comma 0x6d comma 0xed comma 0x1d comma 0x9d comma 0x5d comma 0xdd comma 0x3d comma 0xbd comma 0x7d comma 0xfd comma 
 
 0x03 comma 0x83 comma 0x43 comma 0xc3 comma 0x23 comma 0xa3 comma 0x63 comma 0xe3 comma 0x13 comma 0x93 comma 0x53 comma 0xd3 comma 0x33 comma 0xb3 comma 0x73 comma 0xf3 comma 
 
 0x0b comma 0x8b comma 0x4b comma 0xcb comma 0x2b comma 0xab comma 0x6b comma 0xeb comma 0x1b comma 0x9b comma 0x5b comma 0xdb comma 0x3b comma 0xbb comma 0x7b comma 0xfb comma 
 
 0x07 comma 0x87 comma 0x47 comma 0xc7 comma 0x27 comma 0xa7 comma 0x67 comma 0xe7 comma 0x17 comma 0x97 comma 0x57 comma 0xd7 comma 0x37 comma 0xb7 comma 0x77 comma 0xf7 comma 
 
 0x0f comma 0x8f comma 0x4f comma 0xcf comma 0x2f comma 0xaf comma 0x6f comma 0xef comma 0x1f comma 0x9f comma 0x5f comma 0xdf comma 0x3f comma 0xbf comma 0x7f comma 0xff 
 
 close a bracket dot comma 
 
 
 
 open comment asterisk 
 
 asterisk this function is only used internally when decrypting title key 
 
 asterisk 
 
 close comment static void css underscore titlekey open a parentheses byte asterisk key comma byte asterisk im comma byte invert close a parentheses 
 
 open a bracket 
 
 unsigned int lfsr1 underscore lo comma lfsr1 underscore hi comma lfsr0 comma combined dot comma 
 
 byte o underscore lfsr0 comma o underscore lfsr1 dot comma 
 
 byte k open a square bracket 5 close a square bracket dot comma 
 
 int i dot comma 
 
 
 
 lfsr1 underscore lo is assigned im open a square bracket 0 close a square bracket bitwise or 0x100 dot comma 
 
 lfsr1 underscore hi is assigned im open a square bracket 1 close a square bracket dot comma 
 
 
 
 lfsr0 is assigned open a parentheses open a parentheses im open a square bracket 4 close a square bracket is lesser than is lesser than 17 close a parentheses bitwise or open a parentheses im open a square bracket 3 close a square bracket is lesser than is lesser than 9 close a parentheses bitwise or open a parentheses im open a square bracket 2 close a square bracket is lesser than is lesser than 1 close a parentheses close a parentheses + 8 dash open a parentheses im open a square bracket 2 close a square bracket bitwise and 7 close a parentheses dot comma 
 
 lfsr0 is assigned open a parentheses bit underscore reverse open a square bracket lfsr0 bitwise and 0xff close a square bracket is lesser than is lesser than 24 close a parentheses bitwise or open a parentheses bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 8 close a parentheses bitwise and 0xff close a square bracket is lesser than is lesser than 16 close a parentheses 
 
 bitwise or open a parentheses bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 16 close a parentheses bitwise and 0xff close a square bracket is lesser than is lesser than 8 close a parentheses bitwise or bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 24 close a parentheses bitwise and 0xff close a square bracket dot comma 
 
 
 
 combined is assigned 0 dot comma 
 
 for open a parentheses i is assigned 0 dot comma i is lesser than 5 dot comma + + i close a parentheses open a bracket 
 
 o underscore lfsr1 is assigned lfsr1 underscore bits0 open a square bracket lfsr1 underscore hi close a square bracket ^ lfsr1 underscore bits1 open a square bracket lfsr1 underscore lo close a square bracket dot comma 
 
 lfsr1 underscore hi is assigned lfsr1 underscore lo is greater than is greater than 1 dot comma 
 
 lfsr1 underscore lo is assigned open a parentheses open a parentheses lfsr1 underscore lo bitwise and 1 close a parentheses is lesser than is lesser than 8 close a parentheses ^ o underscore lfsr1 dot comma 
 
 o underscore lfsr1 is assigned bit underscore reverse open a square bracket o underscore lfsr1 close a square bracket dot comma 
 
 
 
 /*_ underscore lfsr0 is assigned open a parentheses lfsr0 is greater than is greater than 7 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 10 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 11 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 19 close a parentheses dot comma */2 
 o underscore lfsr0 is assigned open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses lfsr0 is greater than is greater than 8 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 1 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 3 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 7 close a parentheses dot comma 
 
 lfsr0 is assigned open a parentheses lfsr0 is greater than is greater than 8 close a parentheses bitwise or open a parentheses o underscore lfsr0 is lesser than is lesser than 24 close a parentheses dot comma 
 
 
 
 combined + is assigned open a parentheses o underscore lfsr0 ^ invert close a parentheses + o underscore lfsr1 dot comma 
 
 k open a square bracket i close a square bracket is assigned combined bitwise and 0xff dot comma 
 
 combined is greater than is greater or equal than 8 dot comma 
 
 close a bracket 
 
 
 
 key open a square bracket 4 close a square bracket is assigned k open a square bracket 4 close a square bracket ^ csstab1 open a square bracket key open a square bracket 4 close a square bracket close a square bracket ^ key open a square bracket 3 close a square bracket dot comma 
 
 key open a square bracket 3 close a square bracket is assigned k open a square bracket 3 close a square bracket ^ csstab1 open a square bracket key open a square bracket 3 close a square bracket close a square bracket ^ key open a square bracket 2 close a square bracket dot comma 
 
 key open a square bracket 2 close a square bracket is assigned k open a square bracket 2 close a square bracket ^ csstab1 open a square bracket key open a square bracket 2 close a square bracket close a square bracket ^ key open a square bracket 1 close a square bracket dot comma 
 
 key open a square bracket 1 close a square bracket is assigned k open a square bracket 1 close a square bracket ^ csstab1 open a square bracket key open a square bracket 1 close a square bracket close a square bracket ^ key open a square bracket 0 close a square bracket dot comma 
 
 key open a square bracket 0 close a square bracket is assigned k open a square bracket 0 close a square bracket ^ csstab1 open a square bracket key open a square bracket 0 close a square bracket close a square bracket ^ key open a square bracket 4 close a square bracket dot comma 
 
 
 
 key open a square bracket 4 close a square bracket is assigned k open a square bracket 4 close a square bracket ^ csstab1 open a square bracket key open a square bracket 4 close a square bracket close a square bracket ^ key open a square bracket 3 close a square bracket dot comma 
 
 key open a square bracket 3 close a square bracket is assigned k open a square bracket 3 close a square bracket ^ csstab1 open a square bracket key open a square bracket 3 close a square bracket close a square bracket ^ key open a square bracket 2 close a square bracket dot comma 
 
 key open a square bracket 2 close a square bracket is assigned k open a square bracket 2 close a square bracket ^ csstab1 open a square bracket key open a square bracket 2 close a square bracket close a square bracket ^ key open a square bracket 1 close a square bracket dot comma 
 
 key open a square bracket 1 close a square bracket is assigned k open a square bracket 1 close a square bracket ^ csstab1 open a square bracket key open a square bracket 1 close a square bracket close a square bracket ^ key open a square bracket 0 close a square bracket dot comma 
 
 key open a square bracket 0 close a square bracket is assigned k open a square bracket 0 close a square bracket ^ csstab1 open a square bracket key open a square bracket 0 close a square bracket close a square bracket dot comma 
 
 close a bracket 
 
 
 
 open comment asterisk 
 
 asterisk this function decrypts a title key with the specified disk key 
 
 asterisk 
 
 asterisk tkey : the unobfuscated title key open a parentheses XORed with BusKey close a parentheses 
 
 asterisk dkey : the unobfuscated disk key open a parentheses XORed with BusKey close a parentheses 
 
 asterisk 2048 bytes in length open a parentheses though only 5 bytes are needed comma see below close a parentheses 
 
 asterisk pkey : array of pointers to player keys and disk key offsets 
 
 asterisk 
 
 asterisk 
 
 asterisk use the result returned in tkey with css underscore descramble 
 
 asterisk 
 
 close comment 
 
 int css underscore decrypttitlekey open a parentheses byte asterisk tkey comma byte asterisk dkey comma struct playkey asterisk asterisk pkey close a parentheses 
 
 open a bracket 
 
 byte test open a square bracket 5 close a square bracket comma pretkey open a square bracket 5 close a square bracket dot comma 
 
 int i is assigned 0 dot comma 
 
 
 
 for open a parentheses dot comma asterisk pkey dot comma + + pkey comma + + i close a parentheses open a bracket 
 
 memcpy open a parentheses pretkey comma dkey + open a parentheses asterisk pkey close a parentheses dash is greater than offset comma 5 close a parentheses dot comma 
 
 css underscore titlekey open a parentheses pretkey comma open a parentheses asterisk pkey close a parentheses dash is greater than key comma 0 close a parentheses dot comma 
 
 
 
 memcpy open a parentheses test comma dkey comma 5 close a parentheses dot comma 
 
 css underscore titlekey open a parentheses test comma pretkey comma 0 close a parentheses dot comma 
 
 
 
 if open a parentheses memcmp open a parentheses test comma pretkey comma 5 close a parentheses is equal to fprintf open a parentheses stderr comma " Using Key % d backslash n " comma i + 1 close a parentheses dot comma 
 
 break dot comma 
 
 close a bracket 
 
 close a bracket 
 
 
 
 if open a parentheses ! asterisk pkey close a parentheses open a bracket 
 
 fprintf open a parentheses stderr comma " Shit dash Need Key % d backslash n " comma i + 1 close a parentheses dot comma 
 
 return 0 dot comma 
 
 close a bracket 
 
 
 
 css underscore titlekey open a parentheses tkey comma pretkey comma 0xff close a parentheses dot comma 
 
 
 
 return 1 dot comma 
 
 close a bracket 
 
 
 
 open comment asterisk 
 
 asterisk this function does the actual descrambling 
 
 asterisk 
 
 asterisk sec : encrypted sector open a parentheses 2048 bytes close a parentheses 
 
 asterisk key : decrypted title key obtained from css underscore decrypttitlekey 
 
 asterisk 
 
 close comment void css underscore descramble open a parentheses byte asterisk sec comma byte asterisk key close a parentheses 
 
 open a bracket 
 
 unsigned int lfsr1 underscore lo comma lfsr1 underscore hi comma lfsr0 comma combined dot comma 
 
 unsigned char o underscore lfsr0 comma o underscore lfsr1 dot comma 
 
 unsigned char asterisk end is assigned sec + 0x800 dot comma 
 
 number sign define SALTED open a parentheses i close a parentheses open a parentheses key open a square bracket i close a square bracket ^ sec open a square bracket 0x54 + open a parentheses i close a parentheses close a square bracket close a parentheses 
 
 
 
 lfsr1 underscore lo is assigned SALTED open a parentheses 0 close a parentheses bitwise or 0x100 dot comma 
 
 lfsr1 underscore hi is assigned SALTED open a parentheses 1 close a parentheses dot comma 
 
 
 
 lfsr0 is assigned open a parentheses open a parentheses SALTED open a parentheses 4 close a parentheses is lesser than is lesser than 17 close a parentheses bitwise or open a parentheses SALTED open a parentheses 3 close a parentheses is lesser than is lesser than 9 close a parentheses bitwise or open a parentheses SALTED open a parentheses 2 close a parentheses is lesser than is lesser than 1 close a parentheses close a parentheses + 8 dash open a parentheses SALTED open a parentheses 2 close a parentheses bitwise and 7 close a parentheses dot comma 
 
 lfsr0 is assigned open a parentheses bit underscore reverse open a square bracket lfsr0 bitwise and 0xff close a square bracket is lesser than is lesser than 24 close a parentheses bitwise or open a parentheses bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 8 close a parentheses bitwise and 0xff close a square bracket is lesser than is lesser than 16 close a parentheses 
 
 bitwise or open a parentheses bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 16 close a parentheses bitwise and 0xff close a square bracket is lesser than is lesser than 8 close a parentheses bitwise or bit underscore reverse open a square bracket open a parentheses lfsr0 is greater than is greater than 24 close a parentheses bitwise and 0xff close a square bracket dot comma 
 
 
 
 sec + is assigned 0x80 dot comma 
 
 combined is assigned 0 dot comma 
 
 while open a parentheses sec !=;end close a parentheses open a bracket 
 
 o underscore lfsr1 is assigned lfsr1 underscore bits0 open a square bracket lfsr1 underscore hi close a square bracket ^ lfsr1 underscore bits1 open a square bracket lfsr1 underscore lo close a square bracket dot comma 
 
 lfsr1 underscore hi is assigned lfsr1 underscore lo is greater than is greater than 1 dot comma 
 
 lfsr1 underscore lo is assigned open a parentheses open a parentheses lfsr1 underscore lo bitwise and 1 close a parentheses is lesser than is lesser than 8 close a parentheses ^ o underscore lfsr1 dot comma 
 
 o underscore lfsr1 is assigned bit underscore reverse open a square bracket o underscore lfsr1 close a square bracket dot comma 
 
 
 
 /*_ underscore lfsr0 is assigned open a parentheses lfsr0 is greater than is greater than 7 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 10 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 11 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 19 close a parentheses dot comma */2 
 o underscore lfsr0 is assigned open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses open a parentheses lfsr0 is greater than is greater than 8 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 1 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 3 close a parentheses ^ lfsr0 close a parentheses is greater than is greater than 7 close a parentheses dot comma 
 
 lfsr0 is assigned open a parentheses lfsr0 is greater than is greater than 8 close a parentheses bitwise or open a parentheses o underscore lfsr0 is lesser than is lesser than 24 close a parentheses dot comma 
 
 
 
 combined + is assigned o underscore lfsr0 + open a parentheses byte close a parentheses ~ o underscore lfsr1 dot comma 
 
 asterisk sec + + is assigned csstab1 open a square bracket asterisk sec close a square bracket ^ open a parentheses combined bitwise and 0xff close a parentheses dot comma 
 
 combined is greater than >==8 dot comma 
 
 close a bracket 
 
 close a bracket 
 
 close a bracket 
 
 